package com.deer.wms.ASN.manage.dao;

import com.deer.wms.ASN.manage.model.asn.AsnDetail;
import com.deer.wms.ASN.manage.model.asn.AsnDetailCriteria;
import com.deer.wms.ASN.manage.model.asn.AsnDetailDto;
import com.deer.wms.ASN.manage.model.asn.AsnMasterCriteria;
import com.deer.wms.project.root.mapper.SuperMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Arrays;
import java.util.List;

/**
 * @author guo
 */
public interface AsnDetailMapper extends SuperMapper<AsnDetail> {

    /**
     * 通过条件查询
     *
     * @param criteria criteria
     * @return List<AsnDetailDto>
     */
    List<AsnDetailDto> findList(AsnDetailCriteria criteria);

    /**
     * 通过明细号删除
     *
     * @param billNo 明细号
     */
    void deleteByBillNo(@Param("billNo") String billNo);

    /**
     * 通过明细号查询
     *
     * @param billNo 明细号
     * @return List<AsnDetail>
     */
    List<AsnDetail> findByBillNo(@Param("billNo") String billNo);

    /**
     * 通过明细号查询
     *
     * @param detailNo 明细号
     * @return List<AsnDetailDto>
     */
    List<AsnDetailDto> findByDetailNo(@Param("detailNo") String detailNo);

    List<AsnDetail> selectQda2(@Param("uda2") String uda2);

    List<AsnDetail> selectBillNo(@Param("billNo") String billNo);

    void deleteByBillNoUda2(@Param("billNo") String billNo, @Param("erpLineNo") int erpLineNo);

    List<AsnDetail> queryList(@Param("billNo") String billNo, @Param("erpLineNo") Integer erpLineNo, @Param("asnType") int asnType);

    List<AsnDetail> queryList2(@Param("billNo") String billNo, @Param("erpLineNo") Integer erpLineNo, @Param("asnType") int asnType);

    /**
     * 批量添加从表数据
     *
     * @param asnDetails
     * @return
     */
    int insertList(@Param("coll") List<AsnDetail> asnDetails);

    /**
     * 批量修改从表数据
     * @param asnDetails
     * @return
     */
    int updateList(@Param("collect") List<AsnDetail> asnDetails);

    AsnDetail findByInventoryId(@Param("inventoryId") Integer inventoryId);

    List<AsnDetail> selectListByType(AsnMasterCriteria criteria);
}
